#import <Cocoa/Cocoa.h>

typedef enum {
    RNHorizontalCenter,
    RNHorizontalLeft,
    RNHorizontalRight,
} RNHorizontalLayoutType;

typedef enum {
    RNVerticalCenter,
    RNVerticalTop,
    RNVerticalBottom,
} RNVerticalLayoutType;

typedef enum {
    RNSizeFixed,
    RNSizeFill
} RNSizeType;

@protocol RNLayoutView;

@interface RNLayoutHelper : NSObject
{
    NSView<RNLayoutView> *view_;
    BOOL viewRespondsToSubviewsNeedResizing_;
    
    RNSizeType heightType_;
    RNSizeType widthType_;
    
    RNHorizontalLayoutType horizontalType_;
    RNVerticalLayoutType verticalType_;

    CGFloat leftPadding_;
    CGFloat rightPadding_;
    CGFloat topPadding_;
    CGFloat bottomPadding_;
}

@property(assign) NSView<RNLayoutView> *view;
@property(assign) RNSizeType heightType;
@property(assign) RNSizeType widthType;
@property(assign) RNHorizontalLayoutType horizontalLayoutType;
@property(assign) RNVerticalLayoutType verticalLayoutType;
@property(assign) CGFloat topPadding;
@property(assign) CGFloat bottomPadding;
@property(assign) CGFloat leftPadding;
@property(assign) CGFloat rightPadding;

- (id)initWithView:(NSView<RNLayoutView> *)aView;
- (void)tile;
- (void)setPadding:(CGFloat)padding;
- (void)setHorizontalPadding:(CGFloat)padding;
- (void)setVerticalPadding:(CGFloat)padding;

@end
